package mpbe.estructura.secciones.hormigon_armado.contornos;

/*
 * Este codigo es software libre y se encuentra licenciado 
 * bajo los términos de la Licencia Pública General de GNU versión 3 
 * según se encuentra publicada por la Free Software Foundation.
 * http://www.gnu.org/licenses/gpl.html
 * 
 * Autor: Martin Pablo Bellanca <martin.bellanca@gmail.com>
 * web: http://mpbe.blogspot.com/
 */

import java.util.Vector;

import org.eclipse.swt.graphics.ImageData;

import mpbe.geometria.Punto;

public class SHContornoTe extends SHContornoPorParametros {

	public SHContornoTe() {
		super.designacion = "Te";
		super.parametros[0].designacion = "Ancho de alas (b)=";
		super.parametros[0].valor_default = 50;
		super.parametros[0].valor = 50;
		super.parametros[1].designacion = "Ancho se alma (bo)=";
		super.parametros[1].valor_default = 12;
		super.parametros[1].valor = 12;
		super.parametros[2].designacion = "Altura total (d)=";
		super.parametros[2].valor_default = 60;
		super.parametros[2].valor = 60;
		super.parametros[3].designacion = "Espesor de alas (t)=";
		super.parametros[3].valor_default = 12;
		super.parametros[3].valor = 12;
		super.img = new ImageData("./img/Te.png");
	}

	@Override
	public SHContornoPorParametros getNewParametro() {
		return new SHContornoTe();
	}
	
	@Override
	public boolean cargar_Nodos(Vector<Punto> nodo) {
		double b = super.parametros[0].valor;
		double bo = super.parametros[1].valor;
		double d = super.parametros[2].valor; 
		double t = super.parametros[3].valor;
		
		double A1 = b*t, A2 = bo*(d-t), At = A1+A2;
		double Yg = (A1*(d-t/2)+A2*(d-t)/2)/At;
		double Xg = b/2;
		double Y1 = d-Yg;
		double Y2 = Y1-t;
		
		nodo.removeAllElements();
		// primer punto es superior izquierdo
		Punto pp = new Punto(-Xg, Y1);
		nodo.add(pp); 
		pp = new Punto(Xg, Y1);
		nodo.add(pp);
		pp = new Punto(Xg, Y2);
		nodo.add(pp);
		pp = new Punto(bo/2, Y2);
		nodo.add(pp);
		pp = new Punto(bo/2, -Yg);
		nodo.add(pp);
		pp = new Punto(-bo/2, -Yg);
		nodo.add(pp);
		pp = new Punto(-bo/2, Y2);
		nodo.add(pp);
		pp = new Punto(-Xg, Y2);
		nodo.add(pp);
		
		return true;
	}

}
